 
/**
 * @description 不支持分页。支持有限布局方式 ,仅支持静态数据源，如需动态数据源，可使用PagingCollectionPart
 * 
 */
Rsd.define('Rsd.hermit.sections.CollectionPart', {
    extend: 'Rsd.control.List',
    requires: [
        'Rsd.hermit.sections.AdsViewPart',
        'Rsd.hermit.sections.ProductItemViewPart',
        'Rsd.hermit.sections.BlogItemViewPart'
    ],
    xtype: 'collection',
    layout:'none',
     /**
     * @description 标识该组件是否允许编辑
     */
    domEditable:true,
     /**
     * @description true:表示只允许在模板中修改
     */
    editInMaster:false,
    height: 'auto', 
    width:'100%', 
    layout:'hbox',
    /**
     * 
     */
    itemStyle:{ 
        margin:'50px 0 50px 0',
        justifyContent: 'center'
    },
    /**
     * @description 列数量，0表示自适应
     */
    columnCount:2,  
    /**
     * @description 将控件可编辑的属性或dataSource属性密封在一个schema中提供给外部识别
     */
    schema:{
        type:'object',
        title:'集合',
        for:'',//空或all表示 适配所有属性
        properties:{
            "columnCount":{
                type:'number',
                xtype:'combobox',
                title:'每行数量',
                minimum:0,
                maximum:20,
                default:4,
                enum:[
                    {text:'自适应',value:0},
                    {text:'每行1列',value:1},
                    {text:'每行2列',value:2},
                    {text:'每行3列',value:3},
                    {text:'每行4列',value:4},
                    {text:'每行5列',value:5},
                    {text:'每行6列',value:6},
                    {text:'每行7列',value:7},
                    {text:'每行8列',value:8},
                    {text:'每行9列',value:9},
                    {text:'每行10列',value:10},
                ],
            }, 
            "dataSource":{
                type:'array',
                xtype:'list',//list or gird
                title:'项目列表',
                items:{
                    type:'object',
                    oneOf:['ads-view','product-item-view','blog-item-view'],
                }, 
                buttons:[
                    { text: '删除', handler: 'btn_item_delete', style: { color: '#fff' } },
                    { text: '修改', handler: 'btn_item_update', style: { color: '#fff' } },
                    { text: '上移', handler: 'btn_item_up', style: { color: '#fff' } },
                    { text: '下移', handler: 'btn_item_down', style: { color: '#fff' } }
                ],
                examples:[]
            }
        }
    },
    /**
     * @description 支持动态数据源
     */
    dataSource:[],
    /*
     * */
    constructor: function CollectionPart(config) {
        config = config || {};
        Rsd.apply(this, config);
        
        if(this.columnCount > 0)
        {
            this.itemStyle = this.itemStyle||{};
            this.itemStyle.width = (100/this.columnCount) + '%';
        }
        
    },
     /**
     @public
     @description 加载dataSource到控件上；
     @description 1、dataSource 是数组对象,直接将数组元素作为config 传给item 控件
     @description 2、dataSource 是Rsd.data.Store，将查询返回的对象作为config.data的值 传给item 控件
     @description 3、dataSource 是Rsd.data.Service，将查询返回的对象作为config.data的值 传给item 控件
     * */
    loadData:function loadData(dataSource) {
   
        var _data = dataSource||this.dataSource;
      
        //this.log(_data);
        if(_data == null) 
        { 
            return;
        }
        
        var me = this;
        //数据源 为数组
        if(Rsd.isArray(_data))
        { 
            this.dataSource = _data; 
        }  

        if(Rsd.isObject(_data))
        {
            this.columnCount = _data['columnCount']; 
            this.dataSource = _data['dataSource'];  
        }

        if(this.columnCount>0)
        {
            this.itemStyle = this.itemStyle || {};
            this.itemStyle.width = (100 / this.columnCount) + '%';
        }
        else {
            delete this.itemStyle['width'];
        }
      
        if(this.dataSource == null)
        {
             console.error('Rsd.hermit.sections.CollectionPart属性dataSource不是有效值：' ,this.dataSource||'null');
             return;
        }
        this.callParent(this.dataSource); 
    }
});